package org.dreamfly.core.remote;

import org.dreamfly.core.remote.exception.ServiceException;

/**
 * Created by IntelliJ IDEA.
 * User: Gin
 * Date: 2010-11-27
 * Time: 2:24:26
 * To change this template use File | Settings | File Templates.
 */
public interface ServiceRepository {
    /**
     * 根据指定的Key（serviceClass 和 serviceId 的组合）获取服务代理对象。
     *
     * @param serviceClass
     *            服务接口
     * @param serviceId
     *            服务ID
     * @return 服务代理对象
     */
    Object getService(Class serviceClass, String serviceId) throws ServiceException;

    /**
     * 向服务中心注册服务。
     *
     * @param serviceClass
     *            服务接口
     * @param serviceId
     *            服务ID
     * @param serviceType
     *            服务类型，如xfire,httpinvoker,hessian,custom type等
     * @param serviceUrl
     *            服务地址
     * @param props
     *            附加属性
     */
    void registService(ServiceModel serviceModel) throws ServiceException;

    /**
     * 从服务中心销毁服务。
     *
     * @param serviceClass
     *            服务接口
     * @param serviceId
     *            服务ID
     */
    void removeService(Class serviceClass, String serviceId) throws ServiceException;

    /**
     * 初始化调用的方法。
     *
     */
    void init();

    /**
     * 销毁时调用的方法。
     *
     */
    void destory();
}
